package com.itheima.service.Impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.dao.CheckGroupDao;
import com.itheima.entity.PageResult;
import com.itheima.health.pojo.CheckGroup;
import com.itheima.health.pojo.QueryPageBean;
import com.itheima.service.CheckGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Arrays;

@Service
@Transactional
public class CheckGroupServiceImpl implements CheckGroupService {

    @Autowired
    private CheckGroupDao dao;

    @Override
    public int add(CheckGroup checkGroup, int[] checkItemIds) {
        System.out.println("接收到的数据是");
        System.out.println("checkGroup = " + checkGroup);
        System.out.println("checkItemIds = " + Arrays.toString(checkItemIds));
        //1.先添加检查组 添加检查组完毕 返回检查组的id

        int row1 = dao.add(checkGroup);

        int row2 = 0;
        for (int checkItemId : checkItemIds) {
            row2 += dao.addCheckGroupItems(checkGroup.getId(),checkItemId);
        }
//只有当检查组的表，操作影响行数 》0  ，并且检查项的操作影响行数  ==  检查项的个数。 那么即认为整个添加操作是
        //成功了， 这里的返回1 不代表影响的行数，只是一个标识成功的数字而已。
        return row1 > 0 && row2 == checkItemIds.length ? 1 : 0;
    }

    /**
     * 分页查询 这里采用分页插件
     * @param bean
     * @return
     */
    @Override
    public PageResult<CheckGroup> findPage(QueryPageBean bean) {
        /**
         * dao层是无法返回PageResult对象的 它去查询数据库没法直接得到一个PageResult对象
         * 这里需要 service 自己手动封装
         */

        //1.设置查询条件 查询多少页 每页查询多少条
        PageHelper.startPage(bean.getCurrentPage(),bean.getPageSize());

        //2.调用dao
        Page<CheckGroup> page = dao.findPage(bean);
        //3.封装数据
        return new PageResult<>(page.getTotal(),page.getResult());
    }
}
